Search engines, such as Google, and Peer-to-Peer (P2P) services, such as Napster, gnutella, and Freenet, have made locating files and information on the Internet very easy. However, with tens of millions of computers coupled to the Internet, often there are several sources from which to download any particular file. However, the user has no automatic or adaptive means through which to select the source that will download the entire file in the least amount of time.
In some conventional P2P applications, each file that is available to be downloaded is associated with an indicated download throughput speed of the communication link of the source computer on which the file is stored. However, the associated throughput speed is not reliable information because the throughput speed is manually specified by a user operating the computer on which the file is stored from the user's knowledge of the optimal throughput speed. In addition, the associated throughput speed is not reliable information because even when the user correctly specifies or indicates the throughput speed of the communication link of the source computer on which the file is stored, on occasion, the throughput speed varies according to changing conditions of the communication link. The changing conditions include changes in the network load and the network capacity. Furthermore, the time it takes to obtain a file does not correlate well with how far the source computer is in terms of network hops or how fast it responds to a network Ping. Thus, these metrics are unreliable in determining the fastest source.
When another user is selecting a source from which to download a particular file through the P2P service, often, one of the more important criteria in selecting a source is the throughput speed of the communication link of the computer on which the file is stored. The other user has no ability to automatically and adaptively confirm, verify, test or measure the indicated throughput speed. As a result, the other user must trust the accuracy of the indicated throughput speed. In addition, the other user must manually select a computer from which to download data, which introduces the possibility that the other user may mis-read the indicated throughput speed. Moreover, in conventional P2P networks, the other user often selects the same source to download from when a previous download has been successful, and in which the other user is also unknowledgeable there is another source with better performance.
As a result of the many possible reasons that the indicated throughput speed may vary from the actual throughput speed, there is very little correlation between the specified throughput speed and the actual throughput speed as shown in FIG. 16.
In addition, in conventional P2P methods, after a download is started, the download continues until the download is completed or until the download times out. There is no active monitoring of performance and the end user must manually select a new source if the initial download does not complete, or progresses slower than the user desires.
Furthermore, conventional systems do not discriminate or distinguish between large and small files. Also, other technologies, such as Akamai Technologies Inc. that offer edge services that cache data at the network edge so users don't have to go all the way to the actual server for the data, do not adapt to changing network conditions, they rely on a known static network topology.
A software product named VitalAgent from Lucent Technologies measures end-to-end network performance. VitalAgent provides measurement techniques to test for latency and packet loss, such as estimates of round-trip time (RTT), in which the time between an acknowledgment (ACK) message and a synchronous idle (SYN) message is measured during a Transmission Control Protocol (TCP) socket establishment. An important assumption in VitalAgent is that very little time is required by a computer to respond to the SYN packet and that most of the delay is a result of network latency, rather than server side delays.
A research paper titled “Dynamic Server Selection in the Internet” by Mark E. Crovella and Robert L. Carter describes how to find a “good” service provider for WWW documents based on RTT latency. Their research shows that the number of hops does not correlate with RTT latency. However, Crovella and Carter do not use network throughput or packet loss in their determination of a “good” service provider and they do not implement their findings in an algorithmic method. Crovella and Carter merely disclose that latency is a “good” metric to use. In addition, Crovella and Carter address worldwide web (WWW) documents, and do not address P2P issues.
Furthermore, FreeNet implements a P2P technology that uses distributive storage or caching technology similar to Akamai. FreeNet is a large-scale peer-to-peer network which pools the power of member computers around the world to create a massive virtual information store open to anyone to freely publish or view information of all kinds. Freenet is an enhanced Open Source implementation of the system described by Ian Clarke's 1999 paper “A distributed decentralized information storage and retrieval system.” However, FreeNet does not assist the end user find a faster source. FreeNet's storage and caching technology is adaptive after several attempts from different people to acquire the data, not adaptive to changing network conditions or transaction type.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for the ability to automatically and adaptively confirm, verify, test or measure the indicated performance of the source. There is also a need for the ability to automatically select the download source having the fastest throughput speed. Furthermore, there is a need to adapt the selection process according to the size of the file to be downloaded. Moreover, there is a need to actively monitor performance during the download.